<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
		<title>过滤器</title>
		<!-- 引入开发版本的Vue -->
		<script type="text/javascript" src="../js/vue.js"></script>
		<script type="text/javascript" src="../js/dayjs.min.js"></script>
	</head>
	<body>
		<!-- 
			过滤器：
					概念：对要显示的数据进行特定格式化后再显示（适用于一些简单逻辑的处理）。
					语法：
							1.注册过滤器：Vue.filter(name,callback) 或 new Vue{filters:{}}
							2.使用过滤器：{{ xxx | 过滤器名}}
					备注：
							1.过滤器也可以接收额外参数、多个过滤器也可以串联
							2.并没有改变原本的数据, 是产生新的对应的数据
		 -->
		<!-- 准备好一个容器-->
		<div id="root">
			<h4>一个大日子：{{time}}</h4>
			<!-- 使用计算属性实现 -->
			<h4>一个大日子(computed)：{{fmtTime}}</h4>
			<!-- 使用methods实现 -->
			<h4>一个大日子(methods)：{{getFmtTime()}}</h4>
			<!-- 使用过滤器实现 -->
			<h4>一个大日子：{{time | chuli }}</h4>
			<!-- 过滤器传参 -->
			<h4>一个大日子：{{time | chuli('YYYY年MM月') }}</h4>
			<!-- 过滤器串联 -->
			<h4>一个大日子：{{time | chuli('YYYY*MM*') | jiequ(6) }}</h4>
		</div>

		<hr/>

		<div id="root2">
			<h4>一个大日子：{{time | chuli}}</h4>
		</div>
	</body>

	<script type="text/javascript">
		Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。

		//全局过滤器，配置一次，那么vm，所有的组件，都可用
		Vue.filter('chuli',function(value,str='YYYY年MM月DD日 HH:mm:ss'){
			return dayjs(value).format(str)
		})
		
		new Vue({
			el:'#root',
			data:{
				time:1218196800000
			},
			methods: {
				getFmtTime(){
					return dayjs(this.time).format('YYYY年MM月DD日 HH:mm:ss')
				}
			},
			computed:{
				fmtTime(){
					return dayjs(this.time).format('YYYY年MM月DD日 HH:mm:ss')
				}
			},
			filters:{
				//chuli这个函数何时被调用？当有人使用该过滤器的时候
				/* chuli(value,str='YYYY年MM月DD日 HH:mm:ss'){
					// console.log('@#@#',value,a,b,c)
					return dayjs(value).format(str)
				}, */
				jiequ(value,n=4){
					return value.slice(0,n)
				}
			}
		})
		
		new Vue({
			el:'#root2',
			data:{
				time:1218196800000
			},
		})
	</script>
</html>